package com.ruoyi.business.service;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

import com.ruoyi.business.domain.BusPerson;
import com.ruoyi.business.domain.BusTeam;
import com.ruoyi.business.domain.vo.PeopleRegisterVo;

/**
 * 人员台账Service接口
 * 
 * @author ling
 * @date 2024-07-10
 */
public interface IBusPersonService 
{
    /**
     * 查询人员台账
     * 
     * @param id 人员台账主键
     * @return 人员台账
     */
    public BusPerson selectBusPersonById(Long id);

    /**
     * 查询人员台账列表
     * 
     * @param busPerson 人员台账
     * @return 人员台账集合
     */
    public List<BusPerson> selectBusPersonList(BusPerson busPerson);

    /**
     * 新增人员台账
     * 
     * @param busPerson 人员台账
     * @return 结果
     */
    public int insertBusPerson(BusPerson busPerson);

    /**
     * 注册人员
     *
     * @param busPerson 人员
     * @return int
     * @author admin
     * @date 2024/10/24
     */
    public int register(BusPerson busPerson);

    /**
     * 修改人员台账
     * 
     * @param busPerson 人员台账
     * @return 结果
     */
    public int updateBusPerson(BusPerson busPerson);

    /**
     * 批量删除人员台账
     * 
     * @param ids 需要删除的人员台账主键集合
     * @return 结果
     */
    public int deleteBusPersonByIds(Long[] ids);

    /**
     * 删除人员台账信息
     * 
     * @param id 人员台账主键
     * @return 结果
     */
    public int deleteBusPersonById(Long id);


    /**
     * 功能描述：检测该班组管理是否被选择
     *
     * @param ids
     * @return int
     * @author ling
     * @date 2024/07/11 09:16
     */
    List<BusPerson> checkBusTeamById(Long[] ids);

    /**
     * 功能描述：获取人员注册量
     *
     * @param
     * @return PeopleRegisterVo
     * @author ling
     * @date 2024/07/11 09:16
     */
    PeopleRegisterVo getTableData(LocalDate begin,LocalDate end);


    /**
     * 功能描述：获取人员数量
     *
     * @return {@link Integer }
     * @author ling
     * @date 2024/08/22 15:13
     */
    Integer getCount();

    /**
     * 导入用户数据
     *
     * @param userList      用户列表
     * @param updateSupport 更新支持
     * @param operName      操作员姓名
     * @return {@link String }
     */
    String importUser(List<BusPerson> userList, boolean updateSupport, String operName);

    /**
     * 按班组id获取人员列表
     *
     * @param id 班组id
     * @return {@link List }<{@link BusPerson }>
     */
    List<BusPerson> getPersonListByTeamId(Long id);

    List<BusPerson> getPostPersonListByPostId(Long postId);
}
